samba部署和优化

        samba 服务可以实现 windows 和 linux 的文件共享,配置不难,使用也非常简单。

1.samba 配置文件 smb.conf

        安装系统的时候大多会默认安装 samba ,如果没有安装,在 centos 上只需要运行

1
[root@192 ~]# yum install -y samba samba-client

        samba 配置文件为 /etc/samba/smb.conf ,通过修改这个配置文件来完成各种需求。打开配置文件,发现很多内容都用 # 或者 ; 注释掉了,先看一下未被注释的部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

        主要有以上三个部分:[global] , [homes] , [printers]

        [global] 定义全局的配置, workgroup 用来定义工作组,相信如果安装过 windows 系统,都会对这个 workgroup 不陌生。一般情况下,需要把这里的 MYGROUP 改成 WORKGROUP (windows 默认的工作组名字)。

  • security = user :这里指定 samba 的安全等级。关于安全等级有四种:
  • share :用户不需要帐号密码即可登录 samba 服务器

  • user :由提供服务的 samba 服务器负责检查账户及密码(默认)

  • server :检查账户及密码的工作由另一台 windows 或 samba 服务器负责

  • domain :指定 windows 域控制服务器来验证用户的账户及密码

  • passdb bankend = tdbsam :passdb backend (用户后台),samba有三种用户后台:smbpasswd,tdbsam 和 ldapsam

  • smbpasswd :该方式是使用 smb 工具 smbpasswd 给系统用户(真实用户或者虚拟用户)设置一个 samba 密码,客户端就用此密码访问 samba 资源。smbpasswd 在 /etc/samba 中,有时需要手工创建该文件。

  • tdbsam:使用数据库文件创建用户数据库。数据库文件叫 passdb.tdb,在 /etc/samba 中。passdb.tdb 用户数据库可使用 smbpasswd -a 创建 samba 用户,要创建的 samba 用户必须先是系统用户。也可以使用 pdbedit 创建 samba 账户。pdbedit 参数很多,其中主要的有:

  • pdbedt -a username :新建 samba 账户

  • pdbedit -x username :删除 samba 账户

  • pdbedit -L :列出 samba 用户列表,读取 passdb.tdb 数据库文件

  • pdbedit -Lv :列出 samba 用户列表详细信息

  • pdbedit -c “[D]” -u username :暂停该 samba 用户帐号

  • pdbeidt -c “[]” -u username :恢复该 samba 用户帐号

  • ldapsam :基于 LDAP 账户管理方式验证用户。首先要建立 LDAP 服务,设置 “passdb backend = ldapsam:ldap://LDAP Server”

        load printers 和 cups options 两个参数用来设置打印机相关

        除了这些参数外,还有几个参数需要了解:

  • netbios name = MYSERVER :设置出现在网上邻居中的主机名

  • hosts allow = 127.192.168.12.192.168.13 :用来设置允许的主机,如果在前面加 “;” 则表示允许所有主机。

  • log file = /var/log/samba/%m.log :定义 samba 的日志,这里的 %m 是上面的 netbios name

  • max log size = 50 :指定日志的最大容量,单位是K

        [home] 该部分内容共享用户子机的家目录,也就是说,当用户登录到 samba 服务器上时,实际上是进入到了该用户的家目录,用户登录后,共享名不是 homes 而是用户子机的标识符,对于单纯的文件共享的环境来说这部分可以注释掉。

        [printers] 该部分内容设置打印机共享

2.samba实践

        samba 可以实现 linux 和 windows 机器相互共享文件,非常实用。下面实践几个应用。

A.samba 实践一

        要求:共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求制度

        打开 samba 配置文件 /etc/samba/smb.conf

1
[root@192 ~]# vim /etc/samba/smb.conf

        在 [global] 部分把:MYGROUP 改成 WORKGROUP ,把 security = user 修改为 security = share 。然后在文件的最末尾处加入以下内容:

1
2
3
4
5
6
[share]
comment = share all
path = /tmp/samba
browseable = yes
public = yes
writable = no

        创建测试目录:

1
2
3
4
[root@192 ~]# mkdir /tmp/samba
[root@192 ~]# chmod 777 /tmp/samba
[root@192 ~]# touch /tmp/samba/sharefiles
[root@192 ~]# echo "111111" > /tmp/samba/sharefiles

        启动 samba 服务:

1
[root@192 ~]# /etc/init.d/smb start

        测试能否试验要求,首先测试配置的 smb.conf 是否正确,使用命令:

1
[root@192 ~]# testparm

        会看到一个警告:WARNING: The security=share option is deprecated ,不过影响不大,无需管它。如果没有错就在 windows 机器上的浏览器中输入:file://192.168.0.73/sharefiles 看能否访问到

        在 linux 机器上输入:

1
[root@192 ~]# smbclient //192.168.0.73/share

        还有个方法就是挂载,在挂载前先安装

1
[root@192 ~]# yum install -y cifs-utils

        挂载

1
[root@192 ~]# mount -t cifs //192.168.0.73/share /opt/

B.samba 实践二

        要求:共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写:

        打开 samba 的配置文件 /etc/samba/smb.conf

1
[root@192 ~]# vim /etc/samba/smb.conf

        [global] 部分内容如下:

1
2
3
4
5
6
7
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw

        还需要加入一下内容:

1
2
3
4
5
6
[myshare]
comment = share for users
path = /samba
browseable = yes
writable = yes
public = no

        保存配置文件,创建目录:

1
2
[root@192 ~]# mkdir /samba
[root@192 ~]# chmod 777 /samba

        然后添加用户。因为在 [global] 中 “passdb backend = tdbsam”,所以要使用 pdbedit 来增加用户,注意添加的用户必须在系统中存在,所以需要先创建系统帐号:

1
2
[root@192 ~]# useradd user1
[root@192 ~]# useradd user2

        然后添加 user1 为 samba 帐号:

1
[root@192 ~]# pdbedit -a user1

        在添加 user2 为 samba 帐号:

1
[root@192 ~]# pdbedit -a user2

        列出 samba 的所有帐号:

1
2
3
[root@192 ~]# pdbedit -L
user1:503:
user2:504:

        重启 samba 服务

1
[root@192 ~]# service smb restart

        测试

        打开浏览器输入 file://192.168.0.73/myshare 弹出窗口后输入帐号和密码登录

        linux 机器登录

        具体语法为:smbclient //IP/共享名 -U 用户名

1
[root@192 ~]# smbclient //192.168.0.73/myshare -U user1

        可以用 “?” 列出所有可以使用的命令。常用的有 cd,ls,rm,pwd,tar ,mkdir,chown,get,put等,使用 help+ 命令 可以打印该命令如何使用,其中 get 是下载,put 是上传。

        另外还可以通过挂载方式

1
[root@192 ~]# mount -t cifs //192.168.0.73/myshare /mnt -o username=user2,password=123456

        要指定 -t cifs //IP/共享名 本地挂载点 -o后面跟 username 和 password 挂载完后就可以像使用本地的目录一样使用共享目录了,注意共享名后面不能有斜杠。